home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / reiserfs_xattr.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  4KB  |  133 lines

  1. /*
  2.   File: linux/reiserfs_xattr.h
  3. */
  4.  
  5. #include <linux/config.h>
  6. #include <linux/init.h>
  7. #include <linux/xattr.h>
  8.  
  9. /* Magic value in header */
  10. #define REISERFS_XATTR_MAGIC 0x52465841 /* "RFXA" */
  11.  
  12. struct reiserfs_xattr_header {
  13.     __u32 h_magic;              /* magic number for identification */
  14.     __u32 h_hash;               /* hash of the value */
  15. };
  16.  
  17. #ifdef __KERNEL__
  18.  
  19. struct reiserfs_xattr_handler {
  20.     char *prefix;
  21.         int (*init)(void);
  22.         void (*exit)(void);
  23.     int (*get)(struct inode *inode, const char *name, void *buffer,
  24.            size_t size);
  25.     int (*set)(struct inode *inode, const char *name, const void *buffer,
  26.            size_t size, int flags);
  27.     int (*del)(struct inode *inode, const char *name);
  28.         int (*list)(struct inode *inode, const char *name, int namelen, char *out);
  29.         struct list_head handlers;
  30. };
  31.  
  32.  
  33. #ifdef CONFIG_REISERFS_FS_XATTR
  34. #define is_reiserfs_priv_object(inode) (REISERFS_I(inode)->i_flags & i_priv_object)
  35. #define has_xattr_dir(inode) (REISERFS_I(inode)->i_flags & i_has_xattr_dir)
  36. ssize_t reiserfs_getxattr (struct dentry *dentry, const char *name,
  37.                void *buffer, size_t size);
  38. int reiserfs_setxattr (struct dentry *dentry, const char *name,
  39.                        const void *value, size_t size, int flags);
  40. ssize_t reiserfs_listxattr (struct dentry *dentry, char *buffer, size_t size);
  41. int reiserfs_removexattr (struct dentry *dentry, const char *name);
  42. int reiserfs_delete_xattrs (struct inode *inode);
  43. int reiserfs_chown_xattrs (struct inode *inode, struct iattr *attrs);
  44. int reiserfs_xattr_init (struct super_block *sb, int mount_flags);
  45. int reiserfs_permission (struct inode *inode, int mask, struct nameidata *nd);
  46. int reiserfs_permission_locked (struct inode *inode, int mask, struct nameidata *nd);
  47.  
  48. int reiserfs_xattr_del (struct inode *, const char *);
  49. int reiserfs_xattr_get (const struct inode *, const char *, void *, size_t);
  50. int reiserfs_xattr_set (struct inode *, const char *, const void *,
  51.                                size_t, int);
  52.  
  53. extern struct reiserfs_xattr_handler user_handler;
  54. extern struct reiserfs_xattr_handler trusted_handler;
  55. #ifdef CONFIG_REISERFS_FS_SECURITY
  56. extern struct reiserfs_xattr_handler security_handler;
  57. #endif
  58.  
  59. int reiserfs_xattr_register_handlers (void) __init;
  60. void reiserfs_xattr_unregister_handlers (void);
  61.  
  62. static inline void
  63. reiserfs_write_lock_xattrs(struct super_block *sb)
  64. {
  65.     down_write (&REISERFS_XATTR_DIR_SEM(sb));
  66. }
  67. static inline void
  68. reiserfs_write_unlock_xattrs(struct super_block *sb)
  69. {
  70.     up_write (&REISERFS_XATTR_DIR_SEM(sb));
  71. }
  72. static inline void
  73. reiserfs_read_lock_xattrs(struct super_block *sb)
  74. {
  75.     down_read (&REISERFS_XATTR_DIR_SEM(sb));
  76. }
  77.  
  78. static inline void
  79. reiserfs_read_unlock_xattrs(struct super_block *sb)
  80. {
  81.     up_read (&REISERFS_XATTR_DIR_SEM(sb));
  82. }
  83.  
  84. static inline void
  85. reiserfs_write_lock_xattr_i(struct inode *inode)
  86. {
  87.     down_write (&REISERFS_I(inode)->xattr_sem);
  88. }
  89. static inline void
  90. reiserfs_write_unlock_xattr_i(struct inode *inode)
  91. {
  92.     up_write (&REISERFS_I(inode)->xattr_sem);
  93. }
  94. static inline void
  95. reiserfs_read_lock_xattr_i(struct inode *inode)
  96. {
  97.     down_read (&REISERFS_I(inode)->xattr_sem);
  98. }
  99.  
  100. static inline void
  101. reiserfs_read_unlock_xattr_i(struct inode *inode)
  102. {
  103.     up_read (&REISERFS_I(inode)->xattr_sem);
  104. }
  105.  
  106. #else
  107.  
  108. #define is_reiserfs_priv_object(inode) 0
  109. #define reiserfs_getxattr NULL
  110. #define reiserfs_setxattr NULL
  111. #define reiserfs_listxattr NULL
  112. #define reiserfs_removexattr NULL
  113. #define reiserfs_write_lock_xattrs(sb)
  114. #define reiserfs_write_unlock_xattrs(sb)
  115. #define reiserfs_read_lock_xattrs(sb)
  116. #define reiserfs_read_unlock_xattrs(sb)
  117.  
  118. #define reiserfs_permission NULL
  119.  
  120. #define reiserfs_xattr_register_handlers() 0
  121. #define reiserfs_xattr_unregister_handlers()
  122.  
  123. static inline int reiserfs_delete_xattrs (struct inode *inode) { return 0; };
  124. static inline int reiserfs_chown_xattrs (struct inode *inode, struct iattr *attrs) { return 0; };
  125. static inline int reiserfs_xattr_init (struct super_block *sb, int mount_flags)
  126. {
  127.     sb->s_flags = (sb->s_flags & ~MS_POSIXACL); /* to be sure */
  128.     return 0;
  129. };
  130. #endif
  131.  
  132. #endif  /* __KERNEL__ */
  133.